:art: get_limit_scene_qrcode_url

huangqimin001 4 年 前
コミット
aa2c52e625
共有2 個のファイルを変更した48 個の追加0 個の削除を含む
  1. 4 0
      api/urls.py
  2. 44 0
      api/wx_views.py

+ 4 - 0
api/urls.py

@@ -371,3 +371,7 @@ urlpatterns += [
371 371
     url(r'^del/clerk/sale/submit$', staff_views.del_clerk_sale_submit_api, name='del_clerk_sale_submit_api'),
372 372
     url(r'^del/consumer/submit$', staff_views.del_consumer_submit_api, name='del_consumer_submit_api'),
373 373
 ]
374
+
375
+urlpatterns += [
376
+    url(r'^get_limit_scene_qrcode_url$', wx_views.get_limit_scene_qrcode_url, name='get_limit_scene_qrcode_url'),
377
+]

+ 44 - 0
api/wx_views.py

@@ -0,0 +1,44 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from django.conf import settings
6
+from django_response import response
7
+from pywe_qrcode import qrcode_limit_str_scene, qrcode_url
8
+from pywe_storage import RedisStorage
9
+
10
+from utils.error.errno_utils import ParamStatusCode
11
+from utils.redis.connect import r
12
+
13
+
14
+CFG = settings.WECHAT.get('COMPONENT', {})
15
+
16
+
17
+def get_limit_scene_qrcode_url(request):
18
+    appid = request.GET.get('appid', '')
19
+    scene = request.GET.get('scene', '')
20
+
21
+    if not appid or not scene:
22
+        return response(ParamStatusCode.PARAM_NOT_FOUND)
23
+
24
+    try:
25
+        token = authorizer_access_token(
26
+            component_appid=CFG['appID'],
27
+            component_secret=CFG['appsecret'],
28
+            authorizer_appid=appid,
29
+            storage=RedisStorage(r)
30
+        )
31
+        qrinfo = qrcode_limit_str_scene(
32
+            scene_str=scene,
33
+            appid=appid,
34
+            secret=None,
35
+            token=token,
36
+            storage=RedisStorage(r)
37
+        )
38
+        qrurl = qrcode_url(qrinfo.get('ticket'))
39
+    except Exception:
40
+        qrurl = ''
41
+
42
+    return response(data={
43
+        'qrurl': qrurl,
44
+    })